java.util.Timer এবং TimerTask ক্লাসগুলি Java.util প্যাকেজের অংশ, যা নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট সময় বিরতির পরে কাজ সম্পাদন করার জন্য ব্যবহৃত হয়। এই ক্লাসগুলি টাইমার টাস্ক পরিচালনা করতে সহায়তা করে, যেমন পুনরাবৃত্তি কার্যাবলী বা নির্দিষ্ট সময় পর কার্যাবলী চালানো।
Timer এবং TimerTask সাধারণত time-based scheduling এর জন্য ব্যবহৃত হয় এবং এগুলির মাধ্যমে সিস্টেমে নির্দিষ্ট কাজের জন্য নির্দিষ্ট সময় বা নির্দিষ্ট বিরতিতে কাজ চালানো যায়।
1. Timer Class:
Timer ক্লাসটি সময়ভিত্তিক কার্যাবলী চালানোর জন্য ব্যবহৃত হয়। এটি single thread ব্যবহার করে, যা নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পর কার্যাবলী বা টাস্ক চালাতে সহায়তা করে।
প্রধান বৈশিষ্ট্য:
- Scheduled task:
Timerআপনাকে task scheduling করতে দেয়, যেমন একটি নির্দিষ্ট সময় পরে বা নির্দিষ্ট বিরতির পর কাজ শুরু করা। - Repeating task: আপনি পুনরাবৃত্তি কাজও করতে পারেন, যেমন প্রতি কিছু সময় পর একাধিকবার কাজ চালানো।
- Thread management:
Timerএকটি একক থ্রেড ব্যবহার করে, এবং এটি TimerTask নামক এক বা একাধিক কাজ (tasks) পরিচালনা করতে পারে।
Timer Class এর মেথডসমূহ:
schedule(TimerTask task, long delay):- এটি একটি TimerTask নির্দিষ্ট বিলম্ব (delay) পর সম্পাদন করার জন্য টাইমার শুরু করে।
scheduleAtFixedRate(TimerTask task, long delay, long period):- এটি নির্দিষ্ট সময় পর থেকে একটি কাজ পুনরাবৃত্তি করে নির্দিষ্ট সময় বিরতি (period) অনুযায়ী।
cancel():- এটি টাইমার বন্ধ করে দেয়, এবং সমস্ত চলমান টাস্ক বন্ধ করে দেয়।
2. TimerTask Class:
TimerTask একটি অ্যাবস্ট্র্যাক্ট ক্লাস যা Timer এর সাহায্যে নির্ধারিত কাজ সম্পাদন করতে ব্যবহৃত হয়। একটি TimerTask-এ run() মেথড থাকতে হবে, যা টাইমার যখন কার্যকর হয় তখন কার্যকর হবে।
প্রধান বৈশিষ্ট্য:
- run() method: এটি একমাত্র মেথড যা কার্যকর হয় যখন Timer এটি ট্রিগার করে।
- Scheduling: একটি
TimerTask-কেTimerএর মাধ্যমে নির্ধারিত সময়ের জন্য নির্ধারিত করা যায়।
TimerTask Class এর উদাহরণ:
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
// Timer এবং TimerTask তৈরি করা
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// 5 সেকেন্ড পর প্রথমবার টাস্কটি চালানো
timer.schedule(task, 5000);
// প্রতি 3 সেকেন্ড পর টাস্কটি পুনরাবৃত্তি করতে বলা
timer.scheduleAtFixedRate(task, 5000, 3000);
}
}
Output:
Task executed at: 1634884191854
Task executed at: 1634884194854
Task executed at: 1634884197854
...
ব্যাখ্যা:
- প্রথমে
Timerঅবজেক্ট তৈরি করা হয়েছে এবংTimerTaskঅবজেক্টেrun()মেথডে করা কার্যাবলী উল্লেখ করা হয়েছে। schedule(task, 5000)এর মাধ্যমে ৫ সেকেন্ড পরে প্রথমবার টাস্কটি চালানো হয়।scheduleAtFixedRate(task, 5000, 3000)এর মাধ্যমে ৫ সেকেন্ড পরে শুরু করে প্রতি ৩ সেকেন্ড পর পর পুনরাবৃত্তি করা হয়।
Timer এবং TimerTask এর মধ্যে পার্থক্য:
| Property | Timer | TimerTask |
|---|---|---|
| Purpose | Time-based scheduling of tasks | Task to be executed by Timer |
| Function | Schedules and manages tasks | Contains the task that needs to be executed |
| Key Methods | schedule(), scheduleAtFixedRate(), cancel() | run() (contains logic for the task) |
| Usage | Manages the scheduling of tasks | Defines the task to be executed |
| Thread Management | Uses a single thread to manage all scheduled tasks | Each task is executed by the Timer's thread |
3. Practical Example: Delayed Task Execution
Use Case: আপনি যদি চান যে, একটি নির্দিষ্ট সময় পরে কোনও কাজ সম্পাদিত হোক, তাহলে Timer এবং TimerTask এর সাহায্যে তা সহজেই করতে পারবেন।
উদাহরণ:
import java.util.Timer;
import java.util.TimerTask;
public class DelayedTaskExample {
public static void main(String[] args) {
// Timer তৈরি করা
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed after delay of 10 seconds!");
}
};
// 10 সেকেন্ড পর টাস্কটি চালানো
timer.schedule(task, 10000);
}
}
Output:
Task executed after delay of 10 seconds!
ব্যাখ্যা:
- এখানে
TimerএবংTimerTaskব্যবহার করে ১০ সেকেন্ড পরে একটি নির্দিষ্ট কাজ চালানোর জন্যschedule()মেথড ব্যবহার করা হয়েছে।
4. Practical Example: Periodic Task Execution
Use Case: আপনি যদি চান যে একটি কাজ নির্দিষ্ট সময় পর পর পুনরাবৃত্তি হোক, তাহলে scheduleAtFixedRate() মেথড ব্যবহার করতে পারেন।
উদাহরণ:
import java.util.Timer;
import java.util.TimerTask;
public class PeriodicTaskExample {
public static void main(String[] args) {
// Timer তৈরি করা
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// প্রতি 3 সেকেন্ড পর পর টাস্কটি পুনরাবৃত্তি করা
timer.scheduleAtFixedRate(task, 0, 3000); // First run immediately, then every 3 seconds
}
}
Output:
Task executed at: 1634884191854
Task executed at: 1634884194854
Task executed at: 1634884197854
...
ব্যাখ্যা:
- এখানে
scheduleAtFixedRate()মেথড ব্যবহার করে প্রথমে 0 সেকেন্ড পর থেকে, এরপর প্রতি ৩ সেকেন্ড পর পর টাস্কটি পুনরাবৃত্তি করা হয়েছে। TimerএবংTimerTaskহল টাইম-বেসড কাজের পরিচালনা করার জন্য খুবই কার্যকরী উপায়।Timerনির্দিষ্ট সময়ে বা বিরতিতে কাজ সম্পাদনের জন্য ব্যবহৃত হয়, এবংTimerTaskকাজের বাস্তবায়ন প্রদান করে।schedule()এবংscheduleAtFixedRate()মেথড ব্যবহার করে আপনি কাজগুলো নির্দিষ্ট সময়ে বা নির্দিষ্ট বিরতির পর পুনরাবৃত্তি করতে পারেন।Timerথ্রেড-সেফ নয়, তাই যদি আপনি মাল্টিথ্রেডেড এনভায়রনমেন্টে কাজ করেন, তবেScheduledExecutorServiceব্যবহারের পরামর্শ দেয়া হয়।
Timer এবং TimerTask ক্লাসগুলি java.util প্যাকেজের অংশ, যা scheduled tasks বা নির্দিষ্ট সময়ের মধ্যে কাজ পরিচালনা করার জন্য ব্যবহৃত হয়। এটি মূলত সময় নির্ধারিত কাজগুলো নির্দিষ্ট সময় পরপর চালানোর জন্য ব্যবহৃত হয়।
এই ক্লাস দুটি মূলত থ্রেড ব্যবস্থাপনা এবং সিস্টেমের কাজকে নির্দিষ্ট সময় অনুযায়ী শিডিউল করার জন্য ব্যবহৃত হয়, যেমন কিছু কাজ একবার চলবে বা নির্দিষ্ট সময় পর পর চলবে।
Timer Class
Timer একটি ক্লাস যা TimerTask অবজেক্টগুলি শিডিউল করার জন্য ব্যবহৃত হয়। Timer ক্লাসের মাধ্যমে আপনি নির্দিষ্ট সময় পর অথবা নিয়মিত কোনো কাজ চালানোর জন্য একটি থ্রেড তৈরি করতে পারেন।
Main Features of Timer:
- Scheduling Tasks: আপনি একটি
Timerঅবজেক্ট তৈরি করে এতে একটিTimerTaskযোগ করে নির্দিষ্ট সময়ে অথবা নির্দিষ্ট সময় পর পর কাজ চালাতে পারেন। - Fixed-Rate and Fixed-Delay Scheduling: আপনি fixed-rate (একটি নির্দিষ্ট সময়ের ব্যবধানে কাজ চালানো) অথবা fixed-delay (একটি কাজ শেষ হওয়ার পর পরবর্তী কাজ শুরু হবে) শিডিউল করতে পারেন।
Methods of Timer Class:
schedule(TimerTask task, long delay): নির্দিষ্ট বিলম্ব পর একটি টাস্ক শুরু করবে।schedule(TimerTask task, long delay, long period): নির্দিষ্ট বিলম্ব পর কাজটি শুরু করবে এবং নির্দিষ্ট সময়ে পর পর কাজটি পুনরাবৃত্তি করবে।cancel(): একটি Timer বন্ধ করে দেয় এবং আর কোনো টাস্ক চলতে দেয় না।purge(): সব অসম্পন্ন কাজগুলি মুছে ফেলবে।
TimerTask Class
TimerTask একটি অ্যাবস্ট্রাক্ট ক্লাস যা Runnable ইন্টারফেসকে বাস্তবায়ন করে এবং Timer এর মাধ্যমে শিডিউল করা কোনো কাজের প্রতিনিধিত্ব করে। TimerTask ক্লাসটি run() মেথডে কাজটি বাস্তবায়ন করে, যা Timer টাস্ক শিডিউল করার সময় এক্সিকিউট করা হয়।
Methods of TimerTask Class:
run(): এই মেথডটিTimerTaskঅবজেক্টের মাধ্যমে যেকোনো কাজ করার জন্য ব্যবহৃত হয়। এটিTimerটাস্ক শিডিউল করার সময় স্বয়ংক্রিয়ভাবে কল করা হয়।
Timer এবং TimerTask এর ব্যবহারের উদাহরণ
1. একটি একক কাজ (One-time Task) শিডিউল করা
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি নির্দিষ্ট বিলম্ব পর TimerTask এর মাধ্যমে কাজটি একবার চালানো হবে।
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer(); // Timer object created
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed after 3 seconds!");
}
};
// Schedule the task to run after 3 seconds delay
timer.schedule(task, 3000); // 3000 milliseconds = 3 seconds
}
}
Output:
Task executed after 3 seconds!
2. নির্দিষ্ট সময় পর পর কাজ চালানো (Repeating Task)
এখানে একটি উদাহরণ দেওয়া হলো যেখানে একটি নির্দিষ্ট সময় পর পর কাজটি চালানো হবে।
import java.util.Timer;
import java.util.TimerTask;
public class RepeatingTaskExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed every 2 seconds!");
}
};
// Schedule the task to repeat every 2 seconds after an initial delay of 1 second
timer.scheduleAtFixedRate(task, 1000, 2000); // 1000 ms delay, 2000 ms period
}
}
Output:
Task executed every 2 seconds!
Task executed every 2 seconds!
Task executed every 2 seconds!
...
3. Timer.cancel() এবং Timer.purge() ব্যবহার করা
cancel() এবং purge() মেথড ব্যবহার করে টাস্ক বন্ধ করা এবং অসম্পন্ন টাস্ক মুছে ফেলা যায়।
import java.util.Timer;
import java.util.TimerTask;
public class TimerCancelExample {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed!");
}
};
timer.scheduleAtFixedRate(task, 0, 2000);
// Cancel the task after 6 seconds
new Timer().schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Cancelling task...");
timer.cancel(); // Stops the task from running
}
}, 6000);
}
}
Output:
Task executed!
Task executed!
Task executed!
Cancelling task...
Timer এবং TimerTask এর সুবিধা ও সীমাবদ্ধতা
সুবিধা:
- Scheduled Task Management:
Timerক্লাসের মাধ্যমে আপনি নির্দিষ্ট সময়ে বা নির্দিষ্ট সময় পর পর কাজ শিডিউল করতে পারেন, যা সময়ের সাথে সম্পর্কিত কাজগুলো পরিচালনা করতে সহায়ক। - Ease of Use:
TimerএবংTimerTaskব্যবহারের মাধ্যমে সহজেই টাস্ক শিডিউল এবং পরিচালনা করা যায়।
সীমাবদ্ধতা:
- Single-threaded:
Timerক্লাসটি একক থ্রেডের মাধ্যমে কাজ করে। যদি একটি TimerTask দীর্ঘ সময় ধরে চলতে থাকে, তাহলে এটি অন্যান্য কাজের জন্য ব্লক হয়ে যেতে পারে। এর জন্যScheduledExecutorServiceব্যবহার করা যেতে পারে, যা মাল্টি-থ্রেডেড শিডিউলিং প্রদান করে। - Error Handling: যদি কোনো TimerTask ত্রুটি বা এক্সেপশন ফেল করে, তাহলে
Timerবন্ধ হয়ে যেতে পারে এবং পরবর্তী কাজ চলবে না।
TimerএবংTimerTaskক্লাসের মাধ্যমে আপনি সহজেই নির্দিষ্ট সময়ের মধ্যে কাজ শিডিউল এবং পরিচালনা করতে পারেন।- এটি সাধারণ background tasks, periodic tasks, এবং delayed tasks পরিচালনা করতে সাহায্য করে।
Timerএকক থ্রেডে কাজ করে, তাই দীর্ঘ সময় ধরে চলা কাজগুলোর জন্য আরও উন্নত সমাধান যেমনScheduledExecutorServiceব্যবহার করা যেতে পারে।
এই দুটি ক্লাস ব্যবহার করে আপনি সহজে কাজগুলিকে নির্দিষ্ট সময় অনুযায়ী শিডিউল এবং কাস্টমাইজ করতে পারবেন।
java.util.Timer ক্লাসটি Java-তে নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট সময় অন্তর কোনো কাজ সম্পাদন করতে ব্যবহৃত হয়। এটি task scheduling এর জন্য ব্যবহৃত হয়, যেখানে নির্দিষ্ট সময়ের পরে একটি টাস্ক চালানো হয় অথবা নিয়মিত সময় অন্তর একটি টাস্ক চালানো হয়।
Timer ক্লাসটি TimerTask অবজেক্টগুলোকে পরিচালনা করে এবং এক বা একাধিক টাস্ক নির্দিষ্ট সময় বা নির্দিষ্ট সময় অন্তর চালাতে পারে। Timer ক্লাসটি single-threaded হয়ে থাকে, অর্থাৎ এটি এক সময় একটি কাজই চালাতে পারে। তবে আপনি যদি অনেক টাস্ক একসাথে চালাতে চান, তাহলে ScheduledExecutorService ব্যবহার করা ভালো, যা মাল্টি-থ্রেডিং সমর্থন করে।
Timer এবং TimerTask ক্লাসের প্রধান বৈশিষ্ট্য:
Timer: এই ক্লাসটি টাস্কগুলি schedule করতে ব্যবহৃত হয় এবং এগুলি নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট সময় অন্তর চালানোর জন্য ব্যবহৃত হয়।schedule()মেথডটি টাস্কটি নির্দিষ্ট সময়ের পরে বা নির্দিষ্ট ইন্টারভ্যাল দিয়ে চালানোর জন্য ব্যবহার করা হয়।cancel()মেথডটি সমস্ত টাস্ক বাতিল করার জন্য ব্যবহৃত হয়।
TimerTask: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যা আপনি ব্যবহার করে টাস্ক তৈরি করেন যাTimerদ্বারা সময় নির্ধারণ করা হবে। এর মধ্যেrun()মেথডটি টাস্কের কার্যক্রম নির্ধারণ করে।
Timer এবং TimerTask এর সাথে Task Scheduling
1. Task Scheduling with schedule()
schedule() মেথড ব্যবহার করে আপনি টাস্ককে নির্দিষ্ট সময়ের পরে চালাতে পারেন। উদাহরণস্বরূপ, 5 সেকেন্ড পর একটি টাস্ক চালানো।
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
// Timer object তৈরি
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed after 5 seconds");
}
};
// schedule() মেথড দিয়ে টাস্কটি 5 সেকেন্ড পর চালানো
timer.schedule(task, 5000); // 5000 milliseconds = 5 seconds
}
}
Output (after 5 seconds):
Task executed after 5 seconds
ব্যাখ্যা:
- এখানে
schedule()মেথড ব্যবহার করা হয়েছে, যাতেtask5 সেকেন্ড পর কার্যকর হয়। TimerTaskএরrun()মেথডটি টাস্কের কার্যক্রম নির্ধারণ করে।
2. Repeated Task Scheduling (Fixed-rate and Fixed-delay)
Timer এর মাধ্যমে টাস্ককে পুনরাবৃত্তি (repeated) নির্দিষ্ট সময় অন্তর চালানো যায়। এ জন্য scheduleAtFixedRate() বা schedule() মেথডের বিভিন্ন ভেরিয়েন্ট ব্যবহার করা হয়। দুটি গুরুত্বপূর্ণ পদ্ধতি:
- Fixed-rate scheduling: এটি নির্দিষ্ট সময় পর পর টাস্ক চালায়, এমনকি পূর্ববর্তী টাস্ক সম্পন্ন হতে কিছুটা সময় লাগলে।
- Fixed-delay scheduling: এটি পূর্ববর্তী টাস্ক সম্পূর্ণ হওয়ার পরে নির্দিষ্ট সময় পর পর টাস্ক চালায়।
Example: Repeated Task with Fixed-Delay Scheduling
import java.util.Timer;
import java.util.TimerTask;
public class RepeatedTaskExample {
public static void main(String[] args) {
// Timer object তৈরি
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// schedule() মেথড দিয়ে 2 সেকেন্ড পর পর টাস্ক চালানো
timer.schedule(task, 0, 2000); // 0 delay and repeat every 2000 milliseconds (2 seconds)
}
}
Output:
Task executed at: 1611000000000
Task executed at: 1611000002000
Task executed at: 1611000004000
...
ব্যাখ্যা:
schedule()মেথডে প্রথম প্যারামিটার 0 নির্দিষ্ট করে যা ইঙ্গিত দেয় যে টাস্কটি এখনই চালাতে হবে এবং দ্বিতীয় প্যারামিটার 2000 দিয়ে প্রতি 2 সেকেন্ড পর পর পুনরাবৃত্তি করতে বলা হয়েছে।
3. Fixed-Rate Scheduling Example
Fixed-rate scheduling যখন প্রয়োজন হয়, যেখানে পূর্ববর্তী টাস্কের সম্পন্ন হওয়ার উপর ভিত্তি না করে নির্দিষ্ট সময় পর পর টাস্ক চালাতে হবে।
import java.util.Timer;
import java.util.TimerTask;
public class FixedRateTaskExample {
public static void main(String[] args) {
// Timer object তৈরি
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Fixed-rate Task executed at: " + System.currentTimeMillis());
}
};
// scheduleAtFixedRate() মেথড দিয়ে প্রতি 2 সেকেন্ড পর পর টাস্ক চালানো
timer.scheduleAtFixedRate(task, 0, 2000); // 0 delay and repeat every 2000 milliseconds (2 seconds)
}
}
Output:
Fixed-rate Task executed at: 1611000000000
Fixed-rate Task executed at: 1611000002000
Fixed-rate Task executed at: 1611000004000
...
ব্যাখ্যা:
scheduleAtFixedRate()মেথডটি ব্যবহার করা হয়েছে যা প্রতি 2 সেকেন্ড পর পর টাস্ক চালাবে। Fixed-rate এর ক্ষেত্রে, পূর্ববর্তী টাস্কের সম্পন্ন হওয়ার পর কিছুটা বিলম্ব হলেও পরবর্তী টাস্ক নির্দিষ্ট সময়ে চালানো হবে।
4. Cancelling a Timer
Timer এবং তার সাথে সম্পর্কিত TimerTask টাস্কগুলোকে cancel() মেথড ব্যবহার করে বন্ধ করা যেতে পারে।
import java.util.Timer;
import java.util.TimerTask;
public class TimerCancelExample {
public static void main(String[] args) {
// Timer object তৈরি
Timer timer = new Timer();
// TimerTask তৈরি করা
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed");
}
};
// schedule() মেথড দিয়ে 2 সেকেন্ড পর টাস্ক চালানো
timer.schedule(task, 2000);
// 3 সেকেন্ড পরে টাস্কটি cancel করা
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Cancelling the Timer");
timer.cancel();
}
}, 3000); // 3 seconds later
}
}
Output:
Task executed
Cancelling the Timer
ব্যাখ্যা:
cancel()মেথডটিTimerএর সমস্ত টাস্ক বন্ধ করে দেয়। এখানে 2 সেকেন্ড পর একটি টাস্ক চলছে, আর 3 সেকেন্ড পরcancel()মেথড কল হচ্ছে যা টাস্ক বন্ধ করে দেয়।
Timer এবং TimerTask ক্লাস ব্যবহার করে আপনি সহজেই সময় নির্ধারণ করে টাস্ক পরিচালনা করতে পারেন। এটি কার্যকরীভাবে task scheduling করার জন্য উপযুক্ত, তবে এটি একাধিক থ্রেড সমর্থন করে না। অধিক কার্যকর এবং থ্রেড-সেফ task scheduling এর জন্য ScheduledExecutorService ব্যবহার করার পরামর্শ দেওয়া হয়, যা Timer ক্লাসের চেয়ে আরও উন্নত এবং কম্প্লেক্স কাজের জন্য উপযোগী। Timer এবং TimerTask এর মাধ্যমে আপনি নির্দিষ্ট সময়ে বা পুনরাবৃত্তি ভিত্তিক কাজগুলি সঠিকভাবে পরিচালনা করতে পারবেন।
TimerTask এবং Timer Java-তে টাইমার ভিত্তিক কাজ পরিচালনা করার জন্য ব্যবহৃত দুটি প্রধান ক্লাস। TimerTask একটি অ্যাবস্ট্রাক্ট ক্লাস যা নির্দিষ্ট সময় পর বা নির্দিষ্ট সময় অন্তর অন্তর কোনো কাজ করার জন্য ব্যবহৃত হয়, এবং Timer একটি ক্লাস যা TimerTask-এর নির্ধারিত কাজগুলি বাস্তবায়ন এবং পরিচালনা করতে সহায়তা করে।
TimerTask ক্লাসটি মূলত নির্দিষ্ট সময় পর কোনো কাজ করার জন্য ব্যবহৃত হয় এবং এটি run() মেথডে কাজটি প্রোগ্রাম করা হয়। Timer ক্লাসটি একাধিক TimerTask-কে নির্দিষ্ট সময় অনুযায়ী কার্যকর করতে ব্যবহৃত হয়।
TimerTask এবং Timer এর ব্যবহার:
TimerTask: এটি একটি অ্যাবস্ট্রাক্ট ক্লাস যাrun()মেথডটি ইমপ্লিমেন্ট করে। এখানে আপনি কোন কাজটি সম্পাদন করতে চান তা নির্দিষ্ট করেন।Timer: এটিTimerTaskকে নির্দিষ্ট সময় বা সময় অন্তর অন্তর চালানোর জন্য ব্যবহৃত হয়।
TimerTask এর সাথে Repeated Task Execution
Repeated Task Execution বলতে বোঝানো হয় এমন একটি কাজ যা নির্দিষ্ট সময় অন্তর অন্তর একাধিক বার সম্পাদিত হয়। এটি Timer এবং TimerTask এর মাধ্যমে সহজেই করা যেতে পারে।
TimerTask এবং Timer এর কাজ করার প্রক্রিয়া:
TimerTaskএকটিrun()মেথড থাকে যেখানে কাজটি কোড করা হয়।Timerএরschedule()মেথড ব্যবহার করে একটি নির্দিষ্ট সময় পর অথবা নির্দিষ্ট সময় অন্তর অন্তর কাজটি সম্পাদিত হয়।
TimerTask এর মাধ্যমে Repeated Task Execution এর উদাহরণ:
import java.util.Timer;
import java.util.TimerTask;
public class RepeatedTaskExample {
public static void main(String[] args) {
// Creating a Timer object
Timer timer = new Timer();
// Creating a TimerTask to execute a task
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// Scheduling the task to run every 2 seconds with an initial delay of 0 seconds
timer.scheduleAtFixedRate(task, 0, 2000); // 0ms delay, 2000ms interval
// After some time, we cancel the timer to stop the task execution
// (Optional step to demonstrate stopping after some time)
try {
Thread.sleep(10000); // Run for 10 seconds
} catch (InterruptedException e) {
e.printStackTrace();
}
// Canceling the Timer to stop the repeated task execution
timer.cancel();
System.out.println("Timer canceled, repeated task stopped.");
}
}
Output:
Task executed at: 1631527473152
Task executed at: 1631527475152
Task executed at: 1631527477152
Task executed at: 1631527479152
Timer canceled, repeated task stopped.
ব্যাখ্যা:
TimerTaskক্লাসটি একটি কার্যকরী কাজ প্রোগ্রাম করেছে, যা প্রতি ২ সেকেন্ড পর পরrun()মেথডে কিছু কাজ করতে বলে (এখানে বর্তমান সময় মুদ্রণ করা হয়েছে)।scheduleAtFixedRate()মেথডটি ০ মিলিসেকেন্ড বিলম্বে প্রথমবার কাজ শুরু করার নির্দেশ দেয় এবং তারপর ২ সেকেন্ড অন্তর অন্তর কাজটি পুনরায় সম্পাদিত হয়।- ১০ সেকেন্ড পর
timer.cancel()কল করার মাধ্যমে টাইমারটি বন্ধ করা হয়েছে।
TimerTask এবং Timer এর অন্যান্য মেথড:
schedule(TimerTask task, long delay):
- এই মেথডটি একটি নির্দিষ্ট বিলম্ব পর কাজ শুরু করতে ব্যবহার করা হয়। এটি একবারের জন্য কাজটি চালাতে ব্যবহৃত হয়।
timer.schedule(task, 5000); // Start task after 5 secondsscheduleAtFixedRate(TimerTask task, long delay, long period):
- এই মেথডটি নির্দিষ্ট সময় অন্তর অন্তর কাজটি পুনরায় চালানোর জন্য ব্যবহৃত হয়। প্রথমে বিলম্ব সময় নির্ধারণ করা হয় এবং তারপর নির্দিষ্ট সময়ে একাধিক বার কাজটি চলতে থাকে।
timer.scheduleAtFixedRate(task, 0, 1000); // Every 1 second, starts immediatelycancel():
- এই মেথডটি Timer এর কাজ বন্ধ করার জন্য ব্যবহৃত হয়।
timer.cancel(); // Stops the timer and cancels all scheduled tasksschedule(TimerTask task, Date time):
- এই মেথডটি একটি নির্দিষ্ট Date অবজেক্টের সময় অনুযায়ী কাজটি সম্পাদন করতে ব্যবহৃত হয়।
Date date = new Date(System.currentTimeMillis() + 5000); timer.schedule(task, date); // Schedule task to run after 5 seconds
এটি কখন ব্যবহার করবেন:
- Scheduled tasks: যখন আপনার নির্দিষ্ট সময় পর পর বা সময় অন্তর অন্তর কোনো কাজ করার দরকার হয়, যেমন অটো সেভ ফিচার, ইমেইল রিমাইন্ডার, কিংবা কোনও সার্ভিসের স্ট্যাটাস চেক।
- Simulations: টাইম-ভিত্তিক সিমুলেশন তৈরি করতে।
- Background tasks: ব্যাকগ্রাউন্ডে দীর্ঘ সময় ধরে চলতে থাকা কাজগুলো পরিচালনা করতে।
TimerTask এবং Timer এর মাধ্যমে আপনি সহজেই repeated tasks বা নির্দিষ্ট সময় পর পর কাজ করতে পারেন। এটি Java-তে টাইমার বা স্কেজুলড টাস্ক তৈরি করার একটি শক্তিশালী উপায়। TimerTask সাধারণত run() মেথডে কাজটি সম্পাদন করে এবং Timer এটি নির্দিষ্ট সময় পর বা নির্দিষ্ট সময় অন্তর অন্তর চালানোর জন্য ব্যবহৃত হয়। schedule(), scheduleAtFixedRate(), এবং cancel() মেথডগুলি টাইমার ব্যবস্থাপনায় গুরুত্বপূর্ণ ভূমিকা পালন করে।
java.util প্যাকেজে Timer এবং Executor Framework দুটি গুরুত্বপূর্ণ ক্লাস এবং ইন্টারফেস রয়েছে, যা multithreading এবং task scheduling এর জন্য ব্যবহৃত হয়। যদিও উভয়ই টাইমার টাস্ক পরিচালনা এবং নির্দিষ্ট সময়ে বা নির্দিষ্ট ইন্টারভ্যালের পরে কোড এক্সিকিউট করার জন্য ব্যবহৃত হয়, তবুও তাদের কাজের পদ্ধতি এবং ব্যবহারের ক্ষেত্রে কিছু পার্থক্য রয়েছে।
এখানে আমরা Timer এবং Executor Framework এর মধ্যে পার্থক্য এবং তাদের ব্যবহারের বিশদ আলোচনা করব।
1. Timer
Timer ক্লাসটি একটি সিংগেল থ্রেডের মধ্যে নির্দিষ্ট সময়ে বা নির্দিষ্ট ইন্টারভ্যালের পরে টাস্ক পরিচালনা করার জন্য ব্যবহৃত হয়। এটি java.util.TimerTask ক্লাসের মাধ্যমে টাস্ক সিডিউলিং করে। একাধিক টাস্ককে নির্দিষ্ট সময়সূচী অনুযায়ী এক্সিকিউট করার জন্য Timer ব্যবহার করা হয়।
বৈশিষ্ট্য:
- Single-threaded:
Timerএকটি single-threaded ক্লাস, অর্থাৎ এটি একটি থ্রেডের মধ্যে একাধিক টাস্ক পরিচালনা করে। - Scheduling Tasks: এটি
schedule()এবংscheduleAtFixedRate()মেথডের মাধ্যমে টাস্কের সিডিউল নির্ধারণ করে। - Automatic Thread Management:
Timerটাস্কগুলিকে পরিচালনা করার জন্য স্বয়ংক্রিয়ভাবে থ্রেড ব্যবস্থাপনা করে। - Thread Blocking: একটি Timer থ্রেড যদি কোনো টাস্কের এক্সিকিউশনের সময় আটকে থাকে, তবে অন্যান্য টাস্ক আটকা পড়তে পারে।
উদাহরণ: Timer ব্যবহার করা
import java.util.Timer;
import java.util.TimerTask;
public class TimerExample {
public static void main(String[] args) {
Timer timer = new Timer();
// Creating a TimerTask
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Task executed at: " + System.currentTimeMillis());
}
};
// Schedule the task to run after 2 seconds
timer.schedule(task, 2000); // Run once after 2 seconds
}
}
Output:
Task executed at: 1642069020134
ব্যাখ্যা:
- এখানে
TimerTaskটাস্কটি ২ সেকেন্ড পর এক্সিকিউট করার জন্যtimer.schedule()দ্বারা সিডিউল করা হয়েছে।
2. Executor Framework
Executor Framework java.util.concurrent প্যাকেজে পাওয়া যায় এবং এটি মাল্টিথ্রেডিং কার্যক্রমের জন্য উন্নত এবং নমনীয় উপায় প্রদান করে। এটি thread pooling এবং task scheduling এর জন্য ব্যবহৃত হয়। ExecutorService ইন্টারফেসের মাধ্যমে এটি টাস্ক পরিচালনা করে এবং একাধিক থ্রেডে টাস্ক এক্সিকিউট করার জন্য দক্ষ ব্যবস্থাপনা সরবরাহ করে।
বৈশিষ্ট্য:
- Thread Pooling:
Executor Frameworkথ্রেড পুলের মাধ্যমে একাধিক টাস্ক এক্সিকিউট করে, যার ফলে থ্রেডের পুনঃব্যবহার হয় এবং অ্যাপ্লিকেশনটি আরও দক্ষভাবে কাজ করে। - Multi-threaded: এটি একাধিক থ্রেডের মাধ্যমে টাস্ক পরিচালনা করতে সক্ষম, যা
Timerএর তুলনায় আরো উন্নত এবং নমনীয়। - Task Scheduling:
ExecutorServiceএবংScheduledExecutorServiceএর মাধ্যমে নির্দিষ্ট সময়ে বা নির্দিষ্ট ইন্টারভ্যালের পর টাস্ক সিডিউল করা যায়। - Graceful Shutdown:
ExecutorServiceক্লাসেshutdown()এবংshutdownNow()মেথড রয়েছে, যা টাস্কের এক্সিকিউশন শেষ হওয়ার পর থ্রেড পুল বন্ধ করতে সাহায্য করে।
উদাহরণ: Executor Framework ব্যবহার করা
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExecutorExample {
public static void main(String[] args) {
// Create a thread pool with 2 threads
ExecutorService executor = Executors.newFixedThreadPool(2);
// Submit tasks to the executor
executor.submit(() -> {
System.out.println("Task 1 executed by: " + Thread.currentThread().getName());
});
executor.submit(() -> {
System.out.println("Task 2 executed by: " + Thread.currentThread().getName());
});
// Shutdown the executor
executor.shutdown();
}
}
Output:
Task 1 executed by: pool-1-thread-1
Task 2 executed by: pool-1-thread-2
ব্যাখ্যা:
- এখানে
ExecutorServiceএর মাধ্যমে একটি থ্রেড পুল তৈরি করা হয়েছে এবং দুইটি টাস্ক এক্সিকিউট করা হয়েছে।ExecutorServiceটাস্কগুলিকে থ্রেড পুলে নিয়ে কাজ করতে সাহায্য করেছে এবং একাধিক থ্রেড ব্যবহার করে টাস্কগুলি এক্সিকিউট করা হয়েছে।
Timer এবং Executor Framework এর মধ্যে পার্থক্য
| Feature | Timer | Executor Framework |
|---|---|---|
| Threading Model | Single-threaded model | Multi-threaded model (thread pooling) |
| Task Scheduling | Schedules tasks at fixed rates or with delays | Provides scheduled execution with ScheduledExecutorService |
| Thread Management | Automatic thread management (single thread for all tasks) | Thread pooling and management with fine-grained control |
| Task Execution | Executes tasks in a single thread | Executes tasks using multiple threads |
| Graceful Shutdown | No built-in mechanism for graceful shutdown | Graceful shutdown using shutdown() and shutdownNow() |
| Concurrency Control | Not suitable for high concurrency tasks | Suitable for concurrent tasks with thread pooling |
| Error Handling | Can block on one task, causing delays in other tasks | Does not block other tasks, handles exceptions better |
| Ideal Use Case | Simple scheduled tasks in single-threaded environment | Concurrent task execution and thread management in multi-threaded environments |
- Timer একটি সহজ এবং সিংগেল থ্রেড ব্যবহার করে টাস্ক সিডিউল করার উপায়, যা ছোট এবং কমপ্লেক্সিটির টাস্কের জন্য উপযুক্ত।
- Executor Framework অনেক বেশি নমনীয় এবং multi-threaded পদ্ধতি প্রদান করে, যেখানে থ্রেড পুল ব্যবহার করে একাধিক টাস্ক একসাথে পরিচালনা করা যায়। এটি আরও উন্নত এবং বড় আকারের অ্যাপ্লিকেশন এবং concurrent processing-এর জন্য আদর্শ।
Read more